package com.qq.first_project.entity;

import java.io.Serializable;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 商品信息
 * </p>
 *
 * @author Qiu
 * @since 2022-04-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Product implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 商品类别id（外键）
     */
    private Long typeId;

    /**
     * 商品名称
     */
    private String name;

    /**
     * 价格
     */
    private Integer price;

    /**
     * 创建日期
     */
    @TableField(fill = FieldFill.INSERT)// 自动填充
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")// 入参格式化
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")// 出参格式化
    private Date createTime;

    /**
     * 更新日期
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)// 自动填充
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")// 入参格式化
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")// 出参格式化
    private Date updateTime;

    /**
     * 逻辑删除
     */
    @TableField(fill = FieldFill.INSERT)
    private String deleted;

    /**
     * 备注
     */
    private String remark;

    /**
     * 数量
     */
    private Integer totalNum;

    /**
     * 乐观锁版本号
     */
    @TableField(fill = FieldFill.INSERT)
    private String version;

    /**
     * 导入功能所使用
     * @param typeId
     * @param name
     * @param price
     * @param totalNum
     * @param remark
     * @param version
     * @param deleted
     */
    public Product(Long typeId, String name, int price, int totalNum,String remark,String version,String deleted) {
        this.typeId=typeId;
        this.name=name;
        this.price=price;
        this.totalNum=totalNum;
        this.remark=remark;
        this.version=version;
        this.deleted=deleted;
    }

}
